export const parseSceneParams = (options) => {
  if (options.scene) {
    try {
      // 解码scene参数
      const decodedScene = decodeURIComponent(options.scene)
      
      // 使用原生字符串解析方法替代URLSearchParams
      const params = {}
      const queryString = decodedScene
      const pairs = queryString.split('&')
    
      for (let pair of pairs) {
        const [key, value] = pair.split('=')
        if (key && value) {
          params[key] = value
        }
      }
     
      return params
    } catch (error) {
      console.error("解析scene参数失败:", error)
    }
  }else{
      return  undefined
  }
}


/**
* 通过 cityCode 查找省市信息
* @param {String} cityCode - 目标城市的 code（如"110100"）
* @param {Object} areasData - getAreas返回的完整数据对象
* @returns {Object|null} 包含省市信息的对象，找不到返回null
*/
export function findCityNameByCode(cityCode, areasData) {

for (const province of areasData) {
  if (province.children && Array.isArray(province.children)) {
    for (const city of province.children) {
     
      if (city.id === cityCode) {
        return {
          provinceName: province.name,
          cityName: city.name,
          provinceCode: province.id,
          cityCode: city.id
        };
      }
    }
  }
}
return null;
}

/**
* 公共文件打开函数
* @param {String} url - 文件URL地址
* @param {String} fileName - 文件名（用于判断文件类型）
* @param {Object} options - 可选配置项
* @param {String} options.loadingText - 加载提示文字，默认"打开中..."
* @param {Boolean} options.showSuccessToast - 是否显示成功提示，默认false
* @param {Boolean} options.showErrorToast - 是否显示错误提示，默认true
* @returns {Promise} 返回Promise对象
*/
export function openFile(url, fileName, options = {}) {
const {
  loadingText = '打开中...',
  showSuccessToast = false,
  showErrorToast = true
} = options

return new Promise((resolve, reject) => {
  // 获取文件扩展名
  const fileExtension = fileName.split('.').pop().toLowerCase()

  // 根据文件扩展名确定文件类型
  let fileType = fileExtension
  
  // 显示加载提示
  uni.showLoading({
    title: loadingText,
    mask: true
  })
  console.log("fileType",fileType)
  
  // 下载文件
  uni.downloadFile({
    url: url,
    success: (res) => {
      if (res.statusCode === 200) {
        // 打开文档
        uni.openDocument({
          filePath:encodeURI(res.tempFilePath),
          fileType: fileType,
          success: (openRes) => {
            uni.hideLoading()
            if (showSuccessToast) {
              uni.showToast({ 
                title: '文件打开成功', 
                icon: 'success' 
              })
            }
           
            resolve(openRes)
          },
          fail: (error) => {
            uni.hideLoading()
            if (showErrorToast) {
              uni.showToast({ 
                title: '无法打开此类型文件', 
                icon: 'none' 
              })
            }
            console.error('文件打开失败:', error)
            reject(error)
          }
        })
      } else {
        uni.hideLoading()
        if (showErrorToast) {
          uni.showToast({ 
            title: '文件下载失败', 
            icon: 'none' 
          })
        }
        console.error('文件下载失败:', res.errMsg)
        reject(new Error(res.errMsg))
      }
    },
    fail: (error) => {
      uni.hideLoading()
      if (showErrorToast) {
        uni.showToast({ 
          title: '文件下载失败', 
          icon: 'none' 
        })
      }
      console.error('文件下载失败:', error.errMsg)
      reject(error)
    }
  })
})
}

/**
* 公共图片预览函数
* @param {String|Array} urls - 图片URL或URL数组
* @param {String} current - 当前显示的图片URL
* @returns {Promise} 返回Promise对象
*/
export function previewImage(urls, current = '') {
return new Promise((resolve, reject) => {
  // 确保urls是数组
  const imageUrls = Array.isArray(urls) ? urls : [urls]
  
  uni.previewImage({
    urls: imageUrls,
    current: current || imageUrls[0],
    success: (res) => {
    
      resolve(res)
    },
    fail: (error) => {
      console.error('图片预览失败:', error)
      reject(error)
    }
  })
})
}

/**
* 公共文件处理函数（智能判断文件类型）
* @param {String} url - 文件URL地址
* @param {String} fileName - 文件名
* @param {Object} options - 可选配置项
* @returns {Promise} 返回Promise对象
*/
export function handleFile(url, fileName, options = {}) {
const fileExtension = fileName.split('.').pop().toLowerCase()

// 图片文件直接预览
if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(fileExtension)) {
  return previewImage(url, url)
} else {
  // 其他文件打开
  return openFile(url, fileName, options)
}
}

// 解析附件列表
export function parseAttachmentList(fileUrl) {
if (!fileUrl) return []

const urls = fileUrl.split(',')
return urls.map(url => {
  if (!url.trim()) return null
  
  // 从URL中提取文件名
  const urlParts = url.split('/')
  const fileNameWithId = urlParts[urlParts.length - 1]
  
  // 提取文件名（去掉ID部分）
  // 例如：房屋管理导入模版(1)-1214728039358394368.jpg -> 房屋管理导入模版(1).jpg
  const match = fileNameWithId.match(/^(.+?)-[^-]+(\.[^.]+)$/)
  let displayName = fileNameWithId
  
  if (match) {
    displayName = match[1] + match[2]
  }
  
  return {
    displayName: displayName,
    realUrl: url.trim()
  }
}).filter(item => item !== null)
}

export const objectToParams=(obj)=>{
if (!obj) return ''
return Object.keys(obj)
  .filter(key => obj[key] !== undefined && obj[key] !== null && obj[key] !== '')
  .map(key => `${key}=${obj[key]}`)
  .join('&')
}
